/*
* @Author: Flora
* @Date:   2019-01-15 15:03:02
* @Last Modified by:   Flora
* @Last Modified time: 2019-01-20 10:37:30
*/
'use strict';

var Hogan = require('hogan.js');//hogan新版本用hogan.js
var conf = {
	serverHost : ''
};

var _mm = {
	// 网络请求
	request : function(param){
		var _this=this;
		$.ajax({
			type 		: param.method 	|| 'get',
			url  		: param.url		|| '',
			dataType	: param.type 	|| 'json',
			data 		: param.data 	|| '',
			success 	: function(res){
				// 成功 SUCCESS
				if(0 === res.statusCode){
					typeof param.success === 'function' && param.success(res.data,res.msg);
				}
				// 未登录 NEED_LOGIN
				else if(10 === res.statusCode){
					_this.doLogin();
				}
				// 参数错误 ILLEGAL_ARGUMENT
				else if(2 === res.statusCode){
					typeof param.error === 'function' && param.error(res.msg);
				}
				// 错误
				else if(1 === res.statusCode){
					typeof param.error === 'function' && param.error(res.msg);
				}
			},
			// 404 等错误
			error 		: function(err){
				typeof param.error === 'function' && param.error(err.statusText);
			}
		});
	},
	// 获取服务器地址
	getServerUrl : function(path){
		return conf.serverHost + path;
	},
	// 获取URL参数
	getUrlParam : function(name){
		var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
		var result = window.location.search.substr(1).match(reg);
		return result ? decodeURIComponent(result[2]) : null ;
	},
	// 渲染html模板：hogan
	renderHtml : function(htmlTemplate , data){
		var template = Hogan.compile(htmlTemplate),
		result = template.render(data);
		return result;
	},
	// 成功提示
	successTips : function(msg){
		alert(msg || '操作成功！');
	},
	errorTips : function(msg){
		alert(msg || '出错惹~');
	},
	// 字段验证，支持空判断，手机，邮箱
	validate : function(value,type){
		var value = $.trim(value);
		// 空判断
		if('require' === type){
			return !!value;
		}
		// 手机号验证
		if('phone' === type){
			return /^1\d{10}$/.test(value);
		}
		// 邮箱验证
		if('email' === type){
			return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/.test(value);
		}
		if('price' === type){
			return /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/.test(value);
		}
		if('integer' === type){
			return /^\+?[1-9][0-9]*$/.test(value);
		}
	},
	// 统一登录
	doLogin : function(){
		window.location.href = './user-login.html?redirect='+encodeURIComponent(window.location.href);
		// window.location.href = './user-login.html';//+encodeURIComponent(window.location.href);		
	},
	// 回到主页
	goHome : function(){
		window.location.href = '/index.html';
	},
	requestFile : function(param){
		var _this = this;
		$.ajax({
			type		:'POST',
			url			: param.url, 
			data		: param.data,
			dataType	: param.type 	|| 'json',
			cache		: false,
			contentType	: false,
			//这个很有必要，不然不行
			processData	: false,
			mimeType	: "multipart/form-data",
			success		: function(res){
				if(0 === res.statusCode){
					// 成功 SUCCESS
					typeof param.success === 'function' && param.success(res.data, res.msg);
				}else if(10 === res.statusCode){
					// 未登录 NEED_LOGIN
					_this.doLogin();
				}else if(2 == res.statusCode){
					// 参数错误 ILLEGAL_ARGUMENT
					typeof param.error === 'function' && param.error(res.msg);
				}else if(1 === res.statusCode){
					//其他错误
					typeof param.error === 'function' && param.error(res.msg);
				}
			},
			error 		: function(err){
				typeof param.error === 'function' && param.error(err.statusText);
			}
		});
	}
	
};

module.exports = _mm;